﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DAL;
using BLL;

namespace DACNPM.MyUserControl.UCHienThi
{
    public partial class UCDanhSachHang : UserControl
    {
        HangHoaBUO hhBUO = new HangHoaBUO();
        String idH;
        int id;

        public UCDanhSachHang()
        {
            InitializeComponent();
            dataGridView1.DataSource = hhBUO.GetAll();
        }

        private void rdTimTheoTenHang_CheckedChanged(object sender, EventArgs e)
        {
            txtTimTheoTenHang.Enabled = true;
            txtTimTheoMaHang.Enabled = false;
            dateTimePicker1.Enabled = false;
            txtTimTheoTenHang.Text = "";
            txtTimTheoMaHang.Text = "";
            dataGridView1.Visible = true;
            dataGridView1.DataSource = hhBUO.GetAll();
            txtGiaTu.Enabled = false;
            txtGiaDen.Enabled = false;
            txtGiaTu.Text = "";
            txtGiaDen.Text = "";
            cbxXemTheo.Enabled = false;
        }

        private void rdTimMaHang_CheckedChanged(object sender, EventArgs e)
        {
            txtTimTheoTenHang.Enabled = false;
            txtTimTheoMaHang.Enabled = true;
            dateTimePicker1.Enabled = false;
            txtTimTheoTenHang.Text = "";
            txtTimTheoMaHang.Text = "";
            dataGridView1.Visible = true;
            dataGridView1.DataSource = hhBUO.GetAll();
            txtGiaTu.Enabled = false;
            txtGiaDen.Enabled = false;
            txtGiaTu.Text = "";
            txtGiaDen.Text = "";
            cbxXemTheo.Enabled = false;
        }

        private void rdNgaySX_CheckedChanged(object sender, EventArgs e)
        {
            txtTimTheoTenHang.Enabled = false;
            txtTimTheoMaHang.Enabled = false;
            dateTimePicker1.Enabled = true;
            txtTimTheoTenHang.Text = "";
            txtTimTheoMaHang.Text = "";
            dataGridView1.Visible = true;
            dataGridView1.DataSource = hhBUO.GetAll();
            txtGiaTu.Enabled = false;
            txtGiaDen.Enabled = false;
            txtGiaTu.Text = "";
            txtGiaDen.Text = "";
            cbxXemTheo.Enabled = false;
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (rdTimTheoTenHang.Checked == true)
            {
                if (txtTimTheoTenHang.Text.Equals(""))
                {
                    MessageBox.Show("Chưa nhập tên hàng hóa cần tìm");
                }
                else
                {
                    List<tbl_Hang> list = hhBUO.searchByTenHang(txtTimTheoTenHang.Text);

                    if (list.Count > 0)
                    {
                        dataGridView1.AutoGenerateColumns = false;
                        dataGridView1.DataSource = list;
                        dataGridView1.Visible = true;
                    }
                    else
                    {
                        MessageBox.Show("Không có hàng hóa cần tìm");
                    }
                }
            }
            else if (rdTimMaHang.Checked == true)
            {
                if (txtTimTheoMaHang.Text.Equals(""))
                {
                    MessageBox.Show("Chưa nhập mã hàng hóa cần tìm");
                }
                else
                {
                    List<tbl_Hang> list = hhBUO.searchByMaHang(txtTimTheoMaHang.Text);

                    if (list.Count > 0)
                    {
                        dataGridView1.AutoGenerateColumns = false;
                        dataGridView1.DataSource = list;
                        dataGridView1.Visible = true;
                    }
                    else
                    {
                        MessageBox.Show("Không có hàng hóa cần tìm");
                    }
                }
            }
            else if (rdNgaySX.Checked == true)
            {
                List<tbl_Hang> list = hhBUO.searchByNgaySX(DateTime.Parse(dateTimePicker1.Text));

                if (list.Count > 0)
                {
                    dataGridView1.AutoGenerateColumns = false;
                    dataGridView1.DataSource = list;
                    dataGridView1.Visible = true;
                }
                else
                {
                    MessageBox.Show("Không có hàng hóa cần tìm");
                }
            }
            else if(rdKhoangGia.Checked == true)
            {
                if (cbxXemTheo.Text.Equals("Xem sản phẩm theo ngày cập nhật"))
                {
                    List<tbl_Hang> list = hhBUO.searchByKhoangGia0(int.Parse(txtGiaTu.Text.ToString()), int.Parse(txtGiaDen.Text.ToString()));
                    if (list.Count > 0)
                    {
                        dataGridView1.AutoGenerateColumns = false;
                        dataGridView1.DataSource = list;
                        dataGridView1.Visible = true;
                    }
                    else
                    {
                        MessageBox.Show("Không có hàng hóa cần tìm");
                    }
                }
                else if (cbxXemTheo.Text.Equals("Xem sản phẩm có giá thành thấp đến cao"))
                {
                    List<tbl_Hang> list = hhBUO.searchByKhoangGia1(int.Parse(txtGiaTu.Text.ToString()), int.Parse(txtGiaDen.Text.ToString()));
                    if (list.Count > 0)
                    {
                        dataGridView1.AutoGenerateColumns = false;
                        dataGridView1.DataSource = list;
                        dataGridView1.Visible = true;
                    }
                    else
                    {
                        MessageBox.Show("Không có hàng hóa cần tìm");
                    }
                }
                else if (cbxXemTheo.Text.Equals("Xem sản phẩm có giá thành cao đến thấp"))
                {
                    List<tbl_Hang> list = hhBUO.searchByKhoangGia2(int.Parse(txtGiaTu.Text.ToString()), int.Parse(txtGiaDen.Text.ToString()));
                    if (list.Count > 0)
                    {
                        dataGridView1.AutoGenerateColumns = false;
                        dataGridView1.DataSource = list;
                        dataGridView1.Visible = true;
                    }
                    else
                    {
                        MessageBox.Show("Không có hàng hóa cần tìm");
                    }
                }
            }
        }

        private void txtTimTheoTenHang_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rdTimTheoTenHang.Checked == true)
                {
                    if (txtTimTheoTenHang.Text.Trim().Equals(""))
                    {
                        MessageBox.Show("Chưa nhập tên hàng hóa cần tìm");
                    }
                    else
                    {
                        List<tbl_Hang> list = hhBUO.searchByTenHang(txtTimTheoTenHang.Text.Trim());

                        if (list.Count > 0)
                        {
                            dataGridView1.AutoGenerateColumns = false;
                            dataGridView1.DataSource = list;
                            dataGridView1.Visible = true;
                        }
                        else
                        {
                            dataGridView1.Visible = false;
                            MessageBox.Show("Không có hàng hóa cần tìm");
                        }
                    }
                }
            }
        }

        private void txtTimTheoMaHang_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rdTimMaHang.Checked == true)
                {
                    if (txtTimTheoMaHang.Text.Trim().Equals(""))
                    {
                        MessageBox.Show("Chưa nhập mã hàng hóa cần tìm");
                    }
                    else
                    {
                        List<tbl_Hang> list = hhBUO.searchByMaHang(txtTimTheoMaHang.Text.Trim());

                        if (list.Count > 0)
                        {
                            dataGridView1.AutoGenerateColumns = false;
                            dataGridView1.DataSource = list;
                            dataGridView1.Visible = true;
                        }
                        else
                        {
                            dataGridView1.Visible = false;
                            MessageBox.Show("Không có hàng hóa cần tìm");
                        }
                    }
                }
            }
        }

        private void txtTimTheoTenHang_TextChanged(object sender, EventArgs e)
        {
            List<tbl_Hang> list = hhBUO.searchByTenHang(txtTimTheoTenHang.Text);

            if (list.Count > 0)
            {
                dataGridView1.AutoGenerateColumns = false;
                dataGridView1.DataSource = list;
                dataGridView1.Visible = true;
            }
        }

        private void txtTimTheoMaHang_TextChanged(object sender, EventArgs e)
        {
            List<tbl_Hang> list = hhBUO.searchByMaHang(txtTimTheoMaHang.Text);

            if (list.Count > 0)
            {
                dataGridView1.AutoGenerateColumns = false;
                dataGridView1.DataSource = list;
                dataGridView1.Visible = true;
            }
        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            List<tbl_Hang> list = hhBUO.searchByNgaySX(DateTime.Parse(dateTimePicker1.Text));

            if (list.Count > 0)
            {
                dataGridView1.AutoGenerateColumns = false;
                dataGridView1.DataSource = list;
                dataGridView1.Visible = true;
            }
        }

        private void rdKhoangGia_CheckedChanged(object sender, EventArgs e)
        {
            txtTimTheoTenHang.Enabled = false;
            txtTimTheoMaHang.Enabled = false;
            dateTimePicker1.Enabled = false;
            txtTimTheoTenHang.Text = "";
            txtTimTheoMaHang.Text = "";
            dataGridView1.Visible = true;
            dataGridView1.DataSource = hhBUO.GetAll();
            txtGiaTu.Enabled = true;
            txtGiaDen.Enabled = true;
            txtGiaTu.Text = "";
            txtGiaDen.Text = "";
            cbxXemTheo.Enabled = true;
        }

        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            try
            {
                if (e.Button == System.Windows.Forms.MouseButtons.Right)
                {

                    DataGridView.HitTestInfo hit = dataGridView1.HitTest(e.X, e.Y);


                    // Only RowHeader and Cells (which make up a row) should fire a menu
                    if (hit.Type == DataGridViewHitTestType.RowHeader
                        || hit.Type == DataGridViewHitTestType.Cell
                        && hit.RowIndex >= 0)
                    {
                        // Notice how I assign the menu to the dataGridView below...

                        dataGridView1.ClearSelection();
                        dataGridView1.Rows[hit.RowIndex].Selected = true;
                        dataGridView1.ContextMenuStrip = contextMenuStrip1;
                        dataGridView1.ContextMenuStrip.Show(this.dataGridView1, new Point(e.X, e.Y));

                        id = dataGridView1.HitTest(e.X, e.Y).RowIndex;
                        idH = dataGridView1.Rows[id].Cells[0].Value.ToString();


                    }
                    // and then I remove the menu here...
                    // This is because after we assign it to the dataGridView
                    // it allows you to right-click anywhere on the control to
                    // get a menu.  Try removing this line and expirement.
                    dataGridView1.ContextMenuStrip = null;

                }
            }
            catch
            {
                contextMenuStrip1.Visible = false;
            }
        }

        private void thêmMớiHàngHóaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UCThemHang ucThemHang = new UCThemHang();
            Form form = this.ParentForm;

            ControlAccess.ShowConTrol(form, ucThemHang, "grbHienThiChucNang");
        }

        private void sửaHàngHóaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UCSuaHang ucSuaHang = new UCSuaHang(idH);
            Form form = this.ParentForm;

            ControlAccess.ShowConTrol(form, ucSuaHang, "grbHienThiChucNang");
        }

        private void xóaHàngHóaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult ds = MessageBox.Show("Bạn có chắc chắn muốn xóa", "Xóa dữ liệu hàng hóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (ds == DialogResult.Yes)
            {
                if (hhBUO.Delete(idH))
                {
                    MessageBox.Show("Xóa hàng hóa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Xóa hàng hóa thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                dataGridView1.DataSource = hhBUO.GetAll();
            }
        }
    }
}
